package org.microframework.cloud.logs.service;

import java.util.List;
import org.microframework.base.core.web.page.PageQuery;
import org.microframework.cloud.logs.model.domain.ApiLog;
import org.microframework.cloud.logs.model.dto.ApiLogDTO;
import org.microframework.cloud.logs.model.dto.ApiLogQueryDTO;
import org.microframework.cloud.logs.model.dto.ApiLogStatsDTO;
import com.jfinal.plugin.activerecord.Page;

/**
 * API调用日志服务接口
 * 
 * @author zs
 * @version 1.0.0
 * @since 2024-06-14
 * @description 提供API调用日志的查询、删除、导出等操作接口
 */
public interface IApiLogService {

    /**
     * 查询API调用日志
     * 
     * @param id API调用日志ID
     * @return API调用日志对象
     */
    ApiLogDTO selectApiLogById(String id);

    /**
     * 查询API调用日志列表（分页）
     * 
     * @param pageQuery 分页查询参数
     * @return API调用日志分页结果
     */
    Page<ApiLogDTO> selectApiLogList(PageQuery<ApiLog> pageQuery);

    /**
     * 查询API调用日志列表（不分页）
     * 
     * @param queryDTO 查询条件
     * @return API调用日志集合
     */
    List<ApiLogDTO> selectApiLogList(ApiLogQueryDTO queryDTO);

    /**
     * 新增API调用日志
     * 
     * @param apiLog API调用日志对象
     * @return 结果
     */
    int insertApiLog(ApiLog apiLog);

    /**
     * 修改API调用日志
     * 
     * @param apiLog API调用日志对象
     * @return 结果
     */
    int updateApiLog(ApiLog apiLog);

    /**
     * 批量删除API调用日志
     * 
     * @param ids 需要删除的API调用日志ID数组（逗号分隔的字符串）
     * @return 结果
     */
    int deleteApiLogByIds(String ids);

    /**
     * 删除API调用日志信息
     * 
     * @param id API调用日志ID
     * @return 结果
     */
    int deleteApiLogById(String id);
    
    /**
     * 清空API调用日志
     * 
     * @return 是否成功
     */
    boolean cleanApiLog();
    
    /**
     * 导出API调用日志
     * 
     * @param queryDTO 查询条件
     * @return 导出结果
     */
    Object exportApiLog(ApiLogQueryDTO queryDTO);
    
    /**
     * 获取API调用统计数据
     * 
     * @return 统计数据
     */
    ApiLogStatsDTO getApiCallStatistics();
} 